package com.indra.bbva.pe.monitor.in.dao.impl;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.indra.bbva.pe.monitor.in.dao.iface.ParametrosDAOIface;
import com.indra.bbva.pe.monitor.in.dao.iface.VerificacionDAOIface;
import com.indra.bbva.pe.monitor.in.utils.Util;
import com.stefanini.pe.bbva.bp.monitor.in.to.EstadoOpeTO;
import com.stefanini.pe.bbva.bp.monitor.in.to.MultitablaTO;

@Repository
public class ParametrosDAOImpl extends SqlMapClientDaoSupport implements ParametrosDAOIface {

	@Resource
	private VerificacionDAOIface verificacionDAO;
	
	@Autowired
	public ParametrosDAOImpl(SqlMapClient sqlMapClient) {
		super.setSqlMapClient(sqlMapClient);
	}
	
	@SuppressWarnings("unchecked")
	public List<EstadoOpeTO> consultaEstadoOpeCarga() throws Exception{
		List<EstadoOpeTO> res=new ArrayList<EstadoOpeTO>();
		EstadoOpeTO obj;
		String query = "SELECT EO.IDESTADOOPE AS IDESTADOOPE, EO.DESCRIPCION AS DESCRIPCION FROM TIIAF_ESTADOOPE EO";
		List<Map<String,Object>> lista=verificacionDAO.ejecutarConsulta("2", query);
		for(Map<String,Object> fila:lista){
			obj=new EstadoOpeTO();
			obj.setDescripcion(String.valueOf(fila.get("DESCRIPCION")));
			obj.setIdEstadoOpe(Integer.valueOf(String.valueOf(fila.get("IDESTADOOPE"))));
			res.add(obj);
		}
		
		return res;
	}

	@SuppressWarnings("unchecked")
	public MultitablaTO getMultitabla(String idCodigo){
		Map<String, Object> param = new HashMap<String, Object>();
		param.put("IN_IDCODIGO", idCodigo);		
		getSqlMapClientTemplate().queryForList("BP_MULTITABLA.spConsultaMultitablaByIdCodigo",param);
		return ((List<MultitablaTO>)param.get("OUT_CURSOR")).get(0);
	}
	
	public boolean actualizarFlagCarga(String idCodigo,int valor1){
		Map<String, Object> param = new HashMap<String, Object>();
		param.put("IN_IDCODIGO", idCodigo);	
		param.put("IN_VALOR1",valor1);
		int res;
		String query = "UPDATE TIIAF_MULTITABLA   SET VALOR1="+valor1+"  WHERE IDCODIGO='"+idCodigo+"'";
		try {
			verificacionDAO.ejecutarConsulta("1", query);
			res=1;
		} catch (Exception e) {
			res=0;
			e.printStackTrace();
		}
		return Util.intToBoolean(res);		
	}

	public boolean actualizarParametrosPostCarga() {
		 Map<String,Object> param=new HashMap<String, Object>();		
		 getSqlMapClientTemplate().queryForList("BP_MULTITABLA.spActualizarParametrosPostCarga",param);		 
		 return Util.intToBoolean((Integer)param.get("OUT_RETORNO"));	
	}
}
